/*
 * 描述： <描述>
 * 修改人： rain
 * 修改时间： 2016年8月21日
 * 项目： rainhy-auth
 */
package com.rainhy.auth.context;

import org.joda.time.DateTime;

/**
 * 权限项引用<br>
 * 用来保存对象拥有的权限
 * 
 * @author rain
 * @version [版本号, 2016年8月21日]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
public interface AuthItemRef {
    
    /** authItem实例 */
    AuthItem getAuthItem();
    
    /** 根据引用类型而变动(可以是用户的id,code. 或者职位的id,code. 等任何标识型东西) */
    String getAuthRefId();
    
    /**
     * 权限引用项的类型<br>
     * 利用该类型<br>
     * 实现 人员权限 AUTHREFTYPE_OPERATOR <br>
     * 临时权限 AUTHREFTYPE_OPERATOR_TEMP <br>
     * 角色权限 AUTHREFTYPE_ROLE <br>
     * 职位权限 ... ... <br>
     * 这里用String虽没有int查询快，但能让sql可读性增强
     */
    String getAuthRefType();
    
    /** 权限引用项生效时间,如果为 null 则没有生效时间(立即生效) */
    DateTime getEffectiveDate();
    
    /** 权限引用主键(标识唯一的权限引用主体) */
    String getId();
    
    /** 权限引用项无效时间,如果为 null 则没有无效时间(永久有效) */
    DateTime getInvalidDate();
    
}
